約 4,281,335 件
https://w.atwiki.jp/lookworld/pages/31.html
① インストールファイル(SpreadNET2Web_20050630.EXE)をダブルクリックしてから、インストールを行う。 ② Visual Studio .NET 2003にてVisual C#プロジェクトの「ASP.NET Webアプリケーション」を開く。 ③ 「ソリューションエクスプローラ - プロジェクト名 - 参照設定」にて右クリック→「参照の追加」を選択。 ④ 「.Net」タプを選択して、リストに表示された"FarPoint CalcEngine","FarPoint Excel Assembly","FarPoint Spread for Web Forms"三つのDLLを追加する。 ● Spreadシートのツールバー使用 Spreadにカーソルを合わせて、右クリック→「Spread デザイナ」を選択して、「スプレッド」の「コマンドバー」の「Visible」に“true”または“false”を設定することより、スプレッドのツールバーを表示・非表示にする。 コード記入例: FpSpread1.CommandBar.Visible = true; //ツールバーを表示する FpSpread1.CommandBar.Visible = false; //ツールバーを非表示する ● セルタイプの設定 Spreadにカーソルを合わせて、「Spread デザイナ」を選択して、「セル」の「CellType」を設定すると、チェックボックス、コンボボックスに変更ができる。 コード記入例: FarPoint.Web.Spread.CheckBoxCellType cktype = new FarPoint.Web.Spread.CheckBoxCellType(); FpSpread1.Sheets[0].Cells[0, 0].CellType = cktype; //第一行第一列にチェックボックス型を設定 FpSpread1.Sheets[0].Columns[0].CellType = cktype; //第一列にチェックボックス型を設定 ● Spreadシートへのデータ表示 スプレッド名.Sheets[0](複数のシートがある場合、”0”をインデックスに変更する。).SetValue(行番号,列番号,設定値); 或いは スプレッド名.ActiveSheetView.SetValue(行番号,列番号,設定値); コード記入例: FpSpread1.Sheets[0].SetValue(0, 0, "123456"); //第一行第一列に123456を設定する FpSpread1.ActiveSheetView.SetValue(0, 0, "123456"); //第一行第一列に123456を設定する
https://w.atwiki.jp/tpc-document/pages/278.html
第19章「Mave Forever(覚醒)」 これが最期の瞬間だ。 そう確信して、ゲンダーは固く目を閉じた。 今にも『鯰』がトドメを刺しに上から落ちてくるだろう。そうすれば自分もあの放置されていたレールのように瞬く間にスクラップだ。 せめて最後にグメーだけは助けたかった。とっさに殴り飛ばしてしまったが、なんとか『鯰』の下敷きになるのだけは避けられるだろうと信じたい。 (ああ、時間の経過がいやに長く感じられる。これが噂に聞く走馬灯を見る瞬間というやつなのか?) いつまで待ってもトドメの一撃が到達しない。奴め、随分とじらしてくれるものだ。 しかし恐怖を煽るだけ煽っておいて、とうとう最期の瞬間は訪れなかった。その代わりに上から落ちてきたのは聞き慣れた声だ。 「なんとか間に合ったみたいだ。諦めるのはまだ早いぞ、ゲンダー!」 目を開けると頭上上空には巨大な銀の鯨が飛んでいる。少し横を向くと『鯰』の残骸がゲンダーからほんの僅かに離れた場所に落ちている。ぎりぎりのところで間一髪、踏み潰されずに済んだらしい。 「何が起こったんダ」 「ゲンダー、こっちだ!」 銀の鯨から拡声器を通したガイストの声が聞こえる。 「あの鯨は一体……あれも兵器なのか」 「ゲンダー、話はあとだ。こいつにつかまれ! グメーもこっちへ」 鯨からクレーンが降りてきてゲンダーを引き上げる。クレーンはゲンダーをそっと持ち上げると、鯨のへその部分から内部に格納した。空飛ぶ鯨に見えたそれは、どうやら大きな飛行艇のようだ。グメーもその後を追うように飛行艇の中へと入る。 「遅くなってすまない。よくここまで耐え切ってくれた」 「ガイスト。それにグメーも。無事ダったか」 「それはこっちの台詞だ。どうしたんだ、両手がないじゃないか!」 「グメッ! グメメメッ!!」 心配させるんじゃない、と言いたげにグメーも怒っているような素振りを見せた。 「すまんすまん、殴って悪かった。でもせめておまえダけでも助けようと思ったんダ」 「腕が無くなってるのはそのせいか。もう片方は爆発したようにも見えるが」 「新技を試したんダ。ちょっと失敗したけどな」 「まったく無茶をする。一体誰に似たんだか…」 呆れた様子でガイストはため息をついた。 「それでこの『鯨』は何なんダ? 『鯰』に対抗するためにわざわざ造ったのか」 「もとは先生が開発を進めていたマキナの新型飛行艇、通称スロヴェスト号だ。少し改造したっていう意味ではわざわざ造ったとも言えるね」 ガイストは事の経緯を説明した。 メイヴの復旧は絶望的となり、あらかじめメイヴに頼まれていた指示に従ってブラックボックスをメイヴから取り出したガイストは、まずスヴェンのもとへと向かった。 ブラックボックスは黒石からできている。そしてスヴェンはかつて黒石の研究に携わっていたことを、メイヴのデータベースから知ったからだ。 息を切らしてブラックボックスを小脇に抱えて、血相を変えて走ってきたガイストを顔を見るや、皆まで言わずともスヴェンはすぐに何か緊急事態が起こっていることを察した。 そしてガイストが何かを訊くよりも先に「まずはこれに乗り込みたまえ」と飛行艇を準備したのだ。 あらためて事情を確認すると、スヴェンはブラックボックスを飛行艇に組み込むよう指示した。 「なるべくそれは使いたくなかったのだが……今はやむを得んな」 それによって飛行艇の性能は大幅に向上したというわけだ。 「ブラックボックスのおかげで主砲の性能も大幅に上がってね。君が今にも鯰に踏み潰されるってときにドカンと一発お見舞いしてやったわけだ。それでも間一髪だったようだけどね」 「おかげで命拾いした。恩に着る。しかし、それがここにあるってことは、やっぱりメイヴは……」 「あ、ああ……」 しばしの沈黙。 そして意を決した様子でガイストは事の経緯を話した。 「すまない。僕の力ではどうにもできなかったんだ…」 「ガイストのせいじゃない。オレが頼りなかったせいでこうなったんダ…」 「いや、そもそもの元凶は大統領だ。あいつさえいなければ…………もうよそう。今更言ったところで仕方がない」 「そうダな……せめてメイヴの仇を討とう。状況はどうダ。『鯰』はどうなった」 「まだ安心はできない。なぜなら『鯰』は…」 ガイストが何かを言いかけたとき、飛行艇がガクンと大きく揺れた。 何事かと色めき立つ二人とグメー。そこに艇内放送を通じて操縦を担うスヴェンが召集を呼びかける。 一同は操舵室に駆け寄る。動けないゲンダーはガイストに背負われて移動した。 「先生、状況は?」 「大事無い。少しかすめただけだ」 「まダくたばってないのかよ。本当に化け物みたいな兵器ダな」 「いや、ゲンダー君を襲った『鯰』はガラクタになった。しかし次の『鯰』がもう攻撃を仕掛けてきている」 「次の……えっ? おい、次のって何ダ。あれ一体ダけじゃなかったのかよ!?」 「さっき僕が言いかけたのがまさにそれだ。あんなのがまだ何体も存在するんだ」 「まじかよ。勝てる気がしねえぞ…」 「そこでわしのスロヴェスト号の出番というわけだ。目には目を、兵器には兵器だ。ブラックボックスを組み込んだことで、戦力としてはこちらのほうが勝っている。さあ少し揺れるぞ。しっかり掴まっておれ!」 操縦桿を力強く握ると、スヴェンが飛行艇を急発進させた。 窓から地上を見下ろすと、いつの間に集まってきたのか何体もの『鯰』の姿が確認できる。 地震を起こすだけが能ではない。『鯰』たちはレーザーを放って、上空の『鯨』を撃ち落とそうとする。次々と発射されるレーザーが空に交差する幾筋もの線を描いた。 それをスヴェンは巧みな操縦で隙間を縫うようにかわしていく。 「さあ反撃だ。機銃斉射! 目にもの見せてくれるわ!」 機体を翻してして急降下。群がる『鯰』に弾丸を雨あられと浴びせる。ぎりぎりまで距離を詰めて、ありったけの弾をお見舞いする。そして再び急上昇。ヒット&アウェイの戦法で、一体ずつ確実に敵を減らしていく。一方ゲンダーは操舵室の中を右へ左へと転がっていた。 「こいつめ。蜂の巣にしてやる!!」 固まっている敵には主砲をぶち込んでまとめて一掃する。 「ふははは! 見たか。わしの飛行艇は伊達じゃないぞ」 次々と敵を撃破していくスヴェン無双の開幕。この男、どうやら完全に頭に血が上っているご様子。 「な、なあ。スヴェンってあんなキャラしてたんダったか?」 「いや、まあ……先生の説明によると、ブラックボックスには精神を高揚させる副作用があるらしいから……」 「たまにメイヴが変にアグレッシブになったりしてたのはそれでか」 見る見るうちに敵の数は減っていき、ついに地上で動くものはいなくなった。 広範囲にわたって『鯰』だったものの残骸が散らばっている。 「よし。制圧完了といったところかな」 「すげえよ、この爺さん。ブラックボックスのおかげとはいえ、一人で片付けちまったのか」 そのとき再び機体がガクンと大きく揺れる。 「くッ。こんどは一発もらっちまったみたいダぞ!」 レーダーを確認すると最後の一体がまだ残っていた。どうやら残骸の陰に隠れて攻撃の機会を窺っていたとみえる。 「おのれ。ナメるな!」 怒りに任せて主砲をぶち込む。 付近の残骸を空高く舞い上げながら、『鯰』最後の一体は爆炎を向こうに消えた。 「どうだ。やったか!」 勝ち誇ったように少しハイになった老人が叫ぶ。 ゲンダーは思った。「やったか」は禁止ワードだ。やってないフラグを立てないでくれ、と。 その心配はやはり的中した。 なんと巻き上げられた残骸がパズルのピースを組み合わせるように合体していき、ひとつの塊と化す。数十体分の残骸がひとつに固まり、それはより巨大な兵器を形成する。個々のそれを『鯰』と呼ぶのなら、さながらそれは『大鯰』とでも言ったところだろうか。 「なんだと! 独りでに合体するなどと……一体どうなっているんだ。あり得ない!」 「精神兵器は精神体がコアになっている。だからこそ可能な芸当か。先生、精神体をなんとかしないとあの兵器にトドメを刺すことは難しそうですよ」 「う、く……ッ。わ、わしは一体どうすれば」 「パルス波です! 精神体は特定の波動パターンに弱い! 何かそういう装備はありませんか!?」 「急に言われても困る。あくまでわしは飛行艇の設計が専門であって、武器職人じゃない」 スロヴェスト号に搭載されているのは主砲である荷電粒子砲が一門と、両翼に機銃がそれぞれひとつずつあるだけ。あとは対艦魚雷が数発置いてある程度だ。ゲンダーが『鯨』と見間違えたように機体そのものは大きく頑丈な装甲を持っており防御面に特化しているが、主砲が強力なこと以外は攻撃面ではそれほど優れているわけでもない。 「せめてレーザー兵器でもあればな……パルスレーザーを発射できれば精神体を無効化できるのに」 「ブラックボックスを取り付けたんダろ。それを利用してなんとかならないのか」 「少し時間をくれ。考えてみる…」 しかしいくらない物ねだりをしたところで、都合よくブラックボックスの力でレーザーが発射可能になったりするようなことはない。エネルギー源としては十分過ぎる代物だが、発射装置として使える機構がスロヴェストには備わっていない。ないものは仕方がないのだ。 一方で『大鯰』は見せ付けるかのようにレーザーを放って攻撃を仕掛けてきた。さきほどから地上の『鯰』が放ってきたレーザー砲の残骸を組み合わせてより強大なレーザーと化している。しかも、威力が向上しただけでなく射線も太くなり命中精度も大幅上昇。スロヴェストは防御に重きを置いた装甲ではあるが、それゆえに旋回性を犠牲にしている。まるで面で攻撃してくるかのような『大鯰』のレーザーを避けきるのは難しかった。 三度目の衝撃。そのまま続けてガクン、ガクンと二度三度揺れる。艦内に警告音が鳴り響く。 「うわッ! またやられた」 「これはいかん」 飛行艇が大きく揺れて、機体が下を向き始めた。 「おい、高度が下がってるぞ! 大丈夫なんダろうな!?」 「下がっているのではない、下げとるのだ! いったん海に逃げ込む」 スロヴェストは新型の飛行艇だ。ただの防御特化しただけの鉄の塊とは違う。 普通の飛行艇は水上発進が可能な、空が飛べて水面も移動できる艇だ。しかしそれだけではない。スロヴェストが新型と言われる所以はそこにある。 「これは潜水飛行艇。空だけでなく海中も飛べるのだ。まだ試作段階に過ぎんがな」 「なんダと! そりゃすげえな」 銀の鯨は一直線に降下し、滑るようにマキナ近海へ潜り込んだ。レーザーは海面を境に勢いを失い、海中深くまでは届かない。 「ふう…。あ、危ないところだった」 「空も飛ぶし海にも潜れる。まさに『鯨』そのものダな」 「これで水を得た魚ですね、先生! …いや、魚じゃないけど」 ゲンダーもガイストも一息ついて胸をなでおろした。 「待て……これはしまった。どうやらそうでもないようだぞ、ガイスト君」 警告音は未だ鳴り続けている。艦体はミシミシといやな音を響かせる。 「さっき受けた攻撃でどこか穴が空いていたらしい…。なんということだ……浸水しておるぞ!」 「な…っ」 「なんダと!?」 このままの状態で長く潜行することはできないだろう。しかも浸水の影響で機体重量が増せば再び飛び上がるのも難しくなる。それどころか再浮上できるかどうかすら怪しい。海面での航行は可能だが、仮に浮上できたとしてもレーザー攻撃を受けて黒コゲにされてしまうだろう。 「万事休す……か」 「そんな、ここまで来て」 スヴェンもガイストもがっくりと項垂れてしまった。 「八方塞がりじゃないか! くそっ。こんなとき、メイヴがいてくれたら…」 メイヴならこんなときどうしただろうか。ゲンダーは考えた。 自分にはメイヴのようにシステムに侵入して操作することも、自身のエネルギーを飛行艇に供給するような能力もない。直接的に飛行艇をなんとかすることはできない。ならば、別の方法を考えろ。 飛行艇の操縦技術はスヴェンに劣る。艦体を修理するにしてもまだガイストのほうがそういったことには詳しいだろうし、海中にいる状態ではそれも不可能。グメーのような特殊能力もない。それ以前に、今のゲンダーにはほとんど自力で動けるほどの力さえ残されていなかった。 さぁ、どうする。今動かせるのは大破した右腕と頭のみ。その腕もボロボロで到底何かの役に立つとは思えない。ならばなおさら考えろ。今、自分にできる最大の貢献は考えることだ。 ときにゲンダーの考えはガイストやスヴェンを驚かせてきた。敵は国を一瞬で半壊させるほどの強大な兵器、そして一国の大統領だった。普通ならそこにわずか数人で挑んで勝てるなど、まして戦争をその人数で止めることができようなど想像だにしないだろう。しかし、それでもゲンダーは立ち向かった。勝機があるかなど、そんなことはどうでもよかった。メイヴを護るために、その障害になるなら、たとえそれがなんであろうと立ち向かう覚悟だった。 人はそれを馬鹿と呼ぶだろう。ああそうとも、ゲンダーは馬鹿だった。馬鹿で、しかし真っ直ぐだった。生まれてからヘイヴの研究所を一度も出たことがなかったゲンダーには、いわゆる常識というものは通用しない。だからこそ、常識に囚われない考え方ができる。それはときに、常識の中からは生まれ得ないような答えを導き出す。普通では繋がらない二点をゲンダーは繋ぎ合わせることができるのだ。例えば機械と精神、本来は心を持たぬ物と感情。そんなゲンダーだからこそ、機械(マキナ)と精神(ヴェルスタンド)を繋ぎ合わせることができるはずだ。いや、これはゲンダーにしかできないことだ。 (君がやらなくてだれがやるんだ!) (できるかどうかじゃない、私たちは「やる」んですよ) (グメェェェーーーっっっ!) 仲間たちの声が脳裏に蘇る。そうだ、「やる」んだ! 「おい、銀の鯨! オレの話を聞いてくれ!!」 ゲンダーは飛行艇スロヴェストに向って語りかけた。 「ゲ、ゲンダー君!? どうしたんだ、突然…」 思い出すんだ、メイヴのことを。出会ったばかりのころ、メイヴはあくまでただのシステムに過ぎなかった。冗談がわかる程度の柔軟さこそあったが、あくまでデータに基づいた計算に則って行動するドライなやつだった。ゲンダーもかつてはあくまでメイヴはただの機械に過ぎないと思っていた。しかし、ゲンダーと旅を続けるうちにメイヴは変わっていった。 「鯨! 聞こえていたら応えてくれ! おまえは機械(マキナ)の鯨ダ!」 ゲンダーは生みの親であるヘイヴに絶対の信頼を寄せていた。そのヘイヴの頼みだからメイヴを護る必要がある。最初はそう考えている程度に過ぎなかった。 「ゲンダー、どうした!? 落ち着け、冷静になれ!」 「そして相手は精神(ヴェルスタンド)の鯰ダ!」 だが、ゲンダーは知った。メイヴが自らの命を削ってまで自分を助けようとしてくれていたことを。メイヴが自分をとても心配してくれていたことを。メイヴがゲンダーを信じてくれていたことを! 「信じるんダ、相手を信じるんダ。互いに信じ合うことで初めて互いに手を取り合うことができる。互いに助け合うことができる」 メイヴは変わった。あれほどドライだったメイヴが仲間を心配するというひとつの感情を持った。いや、あるいは変わったのはゲンダー自身のメイヴに対する見方なのかもしれない。ゲンダーもメイヴも、共に旅をすることで互いに影響を与え合ってきたのだ。 ゲンダーはこの感情というものが欠陥だと考えていた。大切なものを失えば悲しい、苦しい、胸が締め付けられる。心は奈落の底深くへと落とされる。 感情とはまさにブラックボックス(わけのわからないもの)だ。感情が原因で簡単な仕事にさえ支障をきたしてしまうことだってある。だからこそゲンダーはこれを欠陥だと考えた。だが、その闇の底から抜け出す希望もまた感情の中から生まれる。 「ゲンダー、一体何をしてるんだ? そんなことをしても意味なんて…」 「解り合える。解り合えるんダ。機械も、精神も!」 ゲンダーは感情を持つがゆえに悩んだ。何度も何度も悩んだ。もう何もかもがどうでもいいと思ってしまうようなことさえあった。しかし、そんなときはいつも仲間……ガイストが、グメーが、そしてメイヴが自分を説得してくれた。 「だから鯨…! 鯰を説得してくれ、攻撃をやめるようにと。おまえたちは仲間ダ。機械と精神、立場は違ってもおまえたちは同じ大陸で生まれたもの同士……仲間なんダ! 仲間同士で争う必要なんてないんダ!」 すると、心の闇は希望という名の光に変わって行く先を明るく照らしてくれた。光によって力がみなぎる。光はいつもの何倍もの力を与えてくれる。 「頼む、応えてくれ!!」 ゲンダーは祈った。信じて祈った。 「ゲンダー君……? もしや損傷が原因で思考回路がおかしくなってしまったのかね」 ひたすらに祈った。大切な仲間のことを想って祈った。 「応えろ! 応えてくれぇーーーッッ!!」 ゲンダーはメイヴのことを想って強く念じた。 『ブォォオオォォォッッッ!!』 どこかから鯰とはまた異なる唸り声が聞こえた。 「応えた…!」 「まさか。水圧で艦体が軋む音か何かだろう…」 スヴェンは投げやりな様子で呟いた。 「いや、しかしこれは……先生、見てください!」 ガイストが海上の様子を知らせるレーダー画像を指差した。そこには何の反応もない。それはさっきまで雨のように降り注いでいた『大鯰』からのレーザーが止んだことを示していた。 「なんと! これは奇跡か? ……いや、おおかた敵がエネルギー切れを起こしただけだろう。それがなんだというのだね。どちらにせよ、もう我々に助かる術など…」 「手はある。機体を海底のほうに向けるんダ」 ゲンダーは叫んだ。ガイストもスヴェンもわけがわからない顔をしている。 「こんどは一体何を言い出すんだ」 「鯨は応えてくれた! 今がチャンスなんダ! また鯨を空に飛ばすぞ!!」 「それは無理な話だ、ゲンダー君。浸水しすぎて浮上さえままならないというのに」 「いや、大丈夫ダ。上手くいく。オレを信じてくれ!」 「どういうことだね。君の話は矛盾しているじゃないか。飛ぶのなら上に向かうものだろう?」 スヴェンは怪訝そうにゲンダーを見つめている。 「だったらオレじゃなくてもいい。オレを作ったヘイヴを信じてくれ! ……頼む」 「信じてみましょう、先生。ヘイヴを……そしてゲンダーを!」 「ガイスト君まで何を言い出すんだ」 「グメっ、グメェーっ!」 グメーもゲンダーを後押しする。 「スヴェン博士!!」 「ああもう、何がなにやら…。ええい、もうどうにでもなれだ!」 半ばヤケになりながらも、スヴェンはゲンダーに言われたとおりに機体を海底に向けて傾ける。 「やったぞ。それで次は?」 「ありがとう、スヴェン。次はそのまま海底に向かって主砲をぶっ放してくれ!」 「なんだと!? ああ、君らの考えることは全くわけがわからん」 スヴェンが主砲の準備に取りかかった。鯨の顎にあたるあたりから主砲が顔をのぞかせる。 エネルギーを凝縮、圧力を主砲に集めていく。その構造としてはゲンダーの汁一本に少し似ているかもしれない。 エネルギー充填完了、狙いは海底。極限まで研ぎ澄まされた一撃を下方に向かって勢いよく撃ち放った。 ブラックボックスが作用し主砲の威力は大幅に底上げされる。粒子砲は海中では摩擦が大きいため、兵器としての攻撃力は大きく削がれることになる。例えるならば超強力な水鉄砲といったところだろうか。それを水中で発射すれば機体は大きな反動を受けることとなり、そしてその勢いが機体を上へと持ち上げ始めた。 「こ、これは……いける……? いけるぞ!」 なおも威力増大、鯨は真一文字を描きながら海を突き抜け勢いよく空に舞い上がる。空を切り風を切り、ロケットのように上空高く飛び上がった。 「と、飛んだ。こんな飛び方……馬鹿げてる…」 「ああ、たしかに馬鹿かもな。ダけど馬鹿はこれで終わりじゃない!」 空を飛んだ鯨。しかし本来鯨とは空を飛ばないもの。たとえ飛行艇だったとしても、いくら主砲の勢いが強かったとしても、この不正規な方法で飛び続けるには無理がある。重力に引かれて機体が下がり始めた。 「お、落ちとるぞ! 次はどうするんだね!?」 「スヴェンはもう一発主砲を準備してくれ!」 「もう一発やるというのかね!? 今更もう一度撃ったところで高度が上がるとは……ええい、くそ。わかった任せろ」 「それからガイストにはオレを外の様子がわかるところまで移動させてほしい」 主砲による勢いが途絶える。勢いを失った鯨は当然のこと、さらに速度を上げて落ちる。 「このままじゃ地面に叩きつけられるぞ! どうか、わしらを無駄死にさせんでくれよ、ゲンダー君」 ゲンダーは計器から鯨と鯰の位置関係を素早く把握する。さらに鯨の移動ラインを瞬時に予測する。 力がみなぎっていく。初めての感覚だった。まさにゲンダーは覚醒状態だと言えた。感覚が、精神が研ぎ澄まされていく。周囲の時の流れがとても遅く感じられる。実際に血が流れているわけではなかったが、熱く血がたぎるようなこの感覚。胸が高鳴るようなこの高揚感。恐れも不安もない、あるのは絶対の自信と希望だ。 なおも傾き落ち続ける鯨。スヴェンもガイストも顔面蒼白で、次の指示はまだかとゲンダーに視線を集める。 鯨がある位置に差し掛かったとき、光が見えた。ゲンダーの脳裏にははっきりとその光が見えた。 「今ダ!! 撃てェーーーッッ!!」 飛行艇に残るすべてのエネルギーを力に換えて最後の一撃を放つ。ブラックボックスは激しく唸り輝き、最高の一撃をもってそれに応える。 (頼む、届いてくれ) そのとき主砲は『大鯰』とはまったく逆の方向を向いていた。まるで意味のなさそうな一撃だったが、もはや誰もゲンダーに口出しはしない。今はゲンダーを信じることだけが、この状況を切り抜ける最後の鍵なのだから。 極限の一撃は虚空に消えた。鯨は反動を受けて一直線に突進する。その目指す先には『大鯰』の姿があった。 「まさかこのまま特攻をかけるつもりか!? ゲ、ゲンダー君、なんてことを……わ、わしはまだ死にたくない!」 「ぼ、僕は最後まで信じているからな、ゲンダー!」 「グメっ、グメェェーっ」 大丈夫、信じるんだ。鯨と鯰……機械と精神は、解り合える。 (メイヴ! おまえの最期の願い、絶対に無駄にはしない!!) 『鯨』はゲンダーの強い想いに呼応するかのように雄叫びを上げた。 『ブォォオオォォォッッッ!!』 「いっけぇぇぇーーーーーッッッ!!」 銀の鯨が鋭く鉄の鯰に突き刺さった。 辺りに静寂が訪れる。 さっきまでの激しい戦いがまるで嘘だったかのような静けさだった。 「わ、わしは……生きとるか…?」 スヴェンは恐る恐る目を開けた。 鯨は『大鯰』の頭に突き立っていた。敵はもうぴくりとも動かない。 「やったぞ! 倒したんダ!」 決死の特攻は敵を行動不能にしたが、その勢いはすべて『大鯰』に受け止められ、スロヴェストは大破することなくその形を保っていた。 「これは驚いた。まさか鯰に助けられることになるとは思いもしなかった」 「言ったダろ、信じろと。鯨と鯰……機械(マキナ)と精神(ヴェルスタンド)は解り合えるんダ」 鯨も鯰も、もう動かなかった。最後の精神兵器の動きが止まったことで、ついに戦争は終わったのだ。 「信じられん。実に信じられん! たったこれだけの人数で本当に戦争を止めてしまうとは!!」 「やはりゲンダーは素晴らしいな。さすがヘイヴの作品。そしてさすがゲンダーだ!」 「グメメ、グメ~っ」 ガイストとスヴェンはゲンダーに深く感謝した。 「ゲンダー。本当にありがとう。君は僕たちの故郷を救ってくれた。復興に時間はかかるだろうが、きっとこれから良くなっていくだろう。メイヴのことは残念だったが……ブラックボックスは僕が持ち帰って研究してもいいだろうか」 「ああ、それがヘイヴの頼みでもある。おまえたちならブラックボックスを悪いようには扱わないと信じてるからな。オレにもできることがあれば協力させてくれ。それにもしかしたら、いつかメイヴが復活できる日が来るかもしれないしな!」 「それは嬉しい言葉だ。さて、ブラックボックスを回収して…」 ガイストが鯨からブラックボックスを取り出そうとすると、 『グオォォオオオォォォッッッ』 動かないはずの鯰が、鯨を呑み込んだまま突然暴れ始めた。 「あ、危ないっ!?」 慌てて飛行艇から脱出するガイストたち。転がるようにスロヴェストから飛び出した。 「みんな、怪我はないかね? 一体何が起こって…」 「ま、まさか……ブラックボックスが!?」 なんと飛行艇に取り付けられたブラックボックスの力を得て『大鯰』が蘇り、さらに突っ込んできた鯨をも取り込んで自身の一部にして復活を遂げてしまったのだった。 「な、なんだと!? 詰めが甘かったとでもいうのか…」 絶望するスヴェンに対して、ガイストは意外にも冷静だった。 (どういうことなんだ? いくらブラックボックスがあらゆる機械の演算能力を大幅に上昇させる特性を備えているからといって、実際に配線なんかを繋ぎ合わせたわけでもないのに、スロヴェストの内部からその力を引き出すなんて。まるで奴には意識があるみたいじゃないか。これはもしや…) 「グメー? グメメー!?」 グメーは誰かを捜すように周囲に呼びかけていた。 「む? 大変だ、ゲンダー君の姿が見当たらない。まさかまだ中にいるのでは…! おーい、ゲンダー君、無事かね!? 早く……早く脱出するんだ!!」 しかしゲンダーからの返事はない。 「まさか、ゲンダー君まで奴に取り込まれてしまったのでは…」 ゲンダーは未だ鯨の中にいた。先の戦いでの損傷によって、ゲンダーに動く力はもはや残されていない。しかもゲンダーには『大鯰』のようにブラックボックスの力を得て回復するような現象は起こらなかった。 ブラックボックスを取り込んだ『大鯰』の暴れるがままに、ゲンダーは右に左に、飛行艇内部の壁へと何度も何度も叩きつけられた。 (嘘ダ。勝ったと思った。メイヴに報いることができたと思った…! 明らかにあとはエンディングを見るダけって雰囲気だったじゃないか…! なのに…なのに……これじゃメイヴにもガイストにも、誰にも顔向けできないじゃないか。こんなのって……ねえダろ……) ゲンダーの意識は薄れつつあった。絶対だったはずの自信も希望も、いつの間に闇に呑まれて消えてしまっていた。感情は場合によって足枷にもなれば大きな力にもなる。それは変化するものであるがゆえに不安定でもある。自信も希望も、時として簡単に失われてしまうものなのだ。 (やっぱりオレだけじゃだめなのか。メイヴ――) ゲンダーは目の前が真っ暗になった。 『ゲ……ン…ダー…?』 メイヴもまた漆黒の闇の中にいた。今、自分がどこにいるのかも、どちらを向いているのかさえわからない。音も光もなにもないその闇の世界で、たしかにメイヴはゲンダーの声を聴いた。いや、声を聴いたというよりもその存在を感じ取ったといったほうがより正確だろう。 『そうだ、私は…。ゲンダーを守らなければなりません。ゲンダーが……ゲンダーが危ない!』 メイヴの感じ取ったゲンダーの存在は徐々に消えつつあった。その事実がメイヴを目覚めさせた。ブラックボックスにメイヴのプログラムは99.9%書き換えられてしまっていたが、残るわずか0.1%がメイヴにゲンダーを思い出させたのだ。その0.1%とは、メイヴが自ら自己修復機能で書き換えた領域、ゲンダーを護るという決意だった。決意は光となって闇を払いメイヴを照らす。その強い想いが今、メイヴを蘇らせる! メイヴは覚醒した!! メイヴの自己修復機能が再開した。 メイヴのプログラムが10%まで修復された。 メイヴの胴体にできた空洞にブラックボックスに代わる新たな動力が自己生成され始めた。 メイヴのプログラムが20%まで修復された。 メイヴの胴体の解体された部分が修復完了した。 メイヴのプログラムが40%まで修復された。 メイヴの新たな動力の自己生成が完了した。その名は【意志の力】 メイヴのプログラムが80%まで修復された。 メイヴはゲンダーの位置を瞬時に把握した。 メイヴのプログラムが完全に修復された。 メイヴの力がみなぎっていく。 メイヴのプログラムが拡張され性能が160%に上がった。 メイヴの身体が赤く発光し始めた。 メイヴの性能が300%に上がった。 『待っててください、ゲンダー! メイヴ、行きます!!』 メイヴはおもむろにロケットランチャー取り出すと、それを使って大統領執務室の壁に大穴を開けた。足元の車輪を格納させると拡張された機能により地面を滑走し、台座をカタパルトとして角柱型の身体をミサイルが如く台座から自身を発射、勢いよく回転しつつ壁の大穴から大空へと飛び立ったのだった。 対抗手段すらも失ったガイストたちは、もはや『大鯰』を相手になす術もなかった。 「そうだ。そもそも土台無理な話だったのだ…」 スヴェンはただただ呆然と立ちつくしている。 「先生、危ないですよ! とにかくこちらへ」 ガイストはスヴェンを引っ張って岩陰に隠れさせると、諦めずに敵を分析し始めた。 (精神兵器は無人の兵器だ。大統領はレティスやブロウティスの情報を盗んで、それを基に精神兵器の開発を進めさせた。ということは、基本的にはあれもレティスやブロウティスと同じはず。精神兵器はそれぞれの個体が情報を共有しながら、司令塔になる個体からの指示を受けて動く。ということはあの『鯰』の群れの中にリーダー格がいたのことになる。はっ、ということはつまり…) 「そうか! 今の『大鯰』は精神体が核になっているんだ! だからいくら壊れても残骸だけになっても平気で動けた。なぜなら機械の部分はあくまで外殻でしかないからな。ブラックボックスから間接的に力を引き出せたのも、スロヴェストを取り込んでしまったのも、実体を持たない精神体が本体だったからなんだ!」 精神体が本体だとわかれば、あとは簡単だ。ガイストは精神の解放研究の第一人者、その対処法は十分に熟知している。 「精神体はパルス波で無効化できる。強力な波動を浴びせてやれば奴は消し飛んでしまう」 「おおっ、でかしたぞ、ガイスト君! それでどうやってそれをやるんだね」 「そうだ。ホログローブだ! ホログローブを中継機にして波動を増幅してやれば、強力な波動光線を精製することだってできるはずだ。先生、少し待っててください。波動発生装置を取ってきます」 「わかった。わしはホログローブを準備しよう。それはどこにあるんだ?」 「それはゲンダーが……しまった! ゲンダーとともにあの『大鯰』の中だ……」 「ああ、もうおしまいだ!」 スヴェンは頭を抱えた。 「グメッ!? グメメー! グメメメーーーっ!!」 するとそのとき、グメーが空に向かって鳴き始めた。グメーの見つめる先には赤いオーラをまとったミサイルのようなものが猛スピードで接近してくる。 「あ、あれは…?」 ガイストたちの目前に見慣れた遠隔モニタが現れた。 『みなさん、お待たせしました。メイヴ イズ カムバックです!』 「メイヴ!?」 メイヴは驚くべき速さで『大鯰』に突撃する。『大鯰』は勢いよく跳ね飛ばされた。そのはずみでゲンダーが弾き飛ばされる。メイヴはアームを格納してそこから大きな網を取り出すと、見事にゲンダーを回収した。 ゲンダーとともにガイストたちの前に降り立つメイヴ。 「メイヴ!? ど、どうやって…!?」 「おまえ死んダんじゃなかったのか!」 ゲンダーもガイストも驚きを隠せない様子だった。 『勝手に殺してもらっては困りますね。私は永遠に不滅です』 「だ、だけど動力もないのにどうやって!?」 『私自身、驚いています。現在、私は私がどうやって動いているのかまったくわかりません。ですが……呼ばれた気がしたんですよ、ゲンダーに。なぜかはわかりませんがゲンダーが危ないと思ったんです。すると、どこからともなく力がみなぎってきました。この原因を探すためにデータベースを片っぱしから調べましたが、それらしい答えは見つかりませんでした。最も矛盾の少ない説明をするならば、まさにこれが奇跡というやつですね』 「う…ううっ、メイヴーーーっ!!」 ゲンダーは思わず自身がまったく動けない状態だったことも忘れてメイヴに飛びついた。 『ゲンダー、危ないですよ。棘が刺さります。それに損傷個所から燃料も漏れ出していますし、あまり激しく動くと損傷がひどくなります。ああ、ほらほら、こんなにぼろぼろになっちゃって』 「よかった…。おまえが無事で、本当によかった……!」 『そんな今にもぶっ壊れてしまいそうなやつが言う台詞ですか。……心配をかけましたね。本当に申し訳ない』 「謝ることなんてない。むしろ、謝らなきゃならないのはオレのほうダ。だって、今までメイヴは…」 メイヴはそっとゲンダーがその先を口にするのを止めた。 『そんなものはあとでいくらでも聞いてあげます。あとは私に任せてください。ゲンダーたちを苦しめたあの鯰めを懲らしめてやりますよ!』 「いや、オレも手伝うよ」 『大事なことなのでもう一度言いましょう。そんな今にもぶっ壊れてしまいそうなやつが言う台詞ですか。ゲンダーは手を出さなくて大丈夫です。あんなやつ、私一人でやってやりますよ。なぜかはわかりませんが、目覚めてからとても調子がいいんです。今ならいつもの3倍は力が発揮できるでしょう。今の私にはもう何も怖いものなどありませんよ!』 メイヴはやけに自信満々だ。まさに負ける気がしない状態とはこのことだった。 「二人とも、聞いてほしいことがあるんだ」 ガイストは『大鯰』の正体について説明した。 敵の本体は精神体だ。ホログローブとパルス波を使えば精神体を封じ込めることができる。メイヴがいれば、ホログローブに手を加えて対精神体仕様に改造するのは朝飯前だ。しかし、そのためには精神体を露出させる必要があった。そこでメイヴが鯰の外殻を取り除き、その隙を狙ってホログローブで精神体をとらえることが決まった。 『さあ調整完了です。これでホログローブから波動パルスを発射できます。ゲンダー、こちらは任せましたよ』 「合点承知ダ!」 『では、いっちょうやってやりましょうか。今回は私の出番が少なかったですからね、その分しっかり活躍させてもらいますよ!』 そう言ってメイヴは鯰に向かって飛び出していった。 『大鯰』はこれでもか、と言わんばかりに追尾レーザーを乱射する。しかしそれよりも速くメイヴはレーザーをかいくぐり、敵の懐に潜り込む。 『この野郎、ぶっ壊してやるです』 メイヴが高速で回転すると、無数の小型爆弾がばら撒かれた。急上昇。爆発の範囲内から脱出。次々に爆発が起こり『大鯰』はその部品を散らしていく。さらに、メイヴを追尾してきたレーザーが『大鯰』に向かってくる。小回りの利かないレーザーは次々に『大鯰』に命中していく。 その上空でメイヴがアームを格納させると、そこからミサイルが姿を見せた。さらに胴体の脇からは何本ものロケットランチャーが取り出される。それらを一斉に発射、全弾命中、大爆発。爆風による煙は岩陰のゲンダーたちのところにまで届き、視界は一寸先さえも遮られる。 爆煙が晴れると、そこには瓦礫の山と地面にできた大きなクレーターの姿があった。 「今ダ!」 ゲンダーがすかさずホログローブを構えた。しかし驚いたことに瓦礫が突然に浮かび上がり集結、合体してひとつの群体を形成し始め、すぐに精神体を隠してしまう。 『なんということでしょう。ばらばらにするだけではすぐに復活してしまいますか…』 さらに、精神体はそれぞれの瓦礫を弾のように発射した。機関銃の如く鉄の塊、銀の塊がメイヴを襲う。鉄の弾はメイヴの胴体にめり込み、銀の弾は貫通する。三倍速のメイヴをもってしても高速で撃ち出されるがらくたを完全に避け切ることができない。撃ち出されたがらくたは、再び精神体のもとへ再集合しまた撃ち出される。攻撃はやむことなく、弾はほぼ無尽蔵。 「メイヴ!」 心配したゲンダーが叫ぶ。 声に反応した精神体は攻撃の矛先をゲンダーに向けた。とっさにゲンダーは背後のガイストたちが隠れる岩陰に転がり込むが、瓦礫の弾丸はゲンダーを追い続ける。彼らの隠れた岩は見る見るうちに形を変えていく。もう長くは持たないのは明白だった。 (こ、こいつぁやばいですね。エマージェンシーです。しかし私は負けるわけにはいかない。あんな攻撃を食らっては、ゲンダーも博士たちもひとたまりもありません。ぶっちゃけ博士たちはどうでもいいですが、ゲンダーは……ゲンダーだけは絶対に死守しなくてはならない! それが今の私の存在理由にして行動原理!! いくら散らしても無駄……さらにあの瓦礫は鎧にして武器でもある……ならば、あの瓦礫ごと精神体を消滅させてしまうしかない!!) ゲンダーたちのすぐ傍に遠隔モニタが現れた。 『ゲンダー、ガイスト、そしてグメー。ああ、ついでにスヴェン博士も。先に謝っておきます、ごめんなさい。せっかく感動の再会ができたけど、どうやらそれを無駄にしてしまいそうです。ですが、これもやつを倒すため。どうかわかってくださいね』 「メイヴ? 何を…言ってるん…ダ?」 『一番おいしいトドメの一撃をもっていかれるのは悔しいですが、まぁ仕方ないので譲ってあげます。これはお世話になった博士たちへの恩返しでもあります。別にゲンダーのためだけじゃないんですからね! ……ゲンダー、あとは頼みましたよ』 「メイヴ…!? おい、メイヴ! 何をするつもりダ! やめろ、そんなこと……やめろ!!」 遠隔モニタにはもう何も表示されない。 「メイヴ!! 待てよ! そんなのいやダ……やめてくれ! メイヴ! メイヴ!!」 メイヴは精神体に向かって音響手榴弾をばら撒いた。数秒遅れて激しい閃光と、爆音が鳴り響く。それは精神体の注意を引くには十分すぎるほどだった。これによって生じたパルス波が精神体の動きを止める。しかし、その効果も長くはもたない。 『これが私の極限の一撃!!』 メイヴのアームが格納される。メイヴの頭上に空洞ができる。空洞はメイヴの筒状の身体を貫くように空いている。そこにメイヴは持てる全ての力を集約させていく。 エネルギー充填開始! (スヴェン博士、あのときは私を修理していただいてありがとうございました) セーフティーロック解除! (ガイスト、ブラックボックスはあなたに託します。あれは丈夫なので、きっとこの攻撃にも耐えてくれるでしょう) ターゲットスコープオープン! (グメー、最後まであなたはよくわかりませんでしたが、とりあえずゲンダーのことをよろしくお願いします) 電影クロスゲージ明度20! (そして、ゲンダー。言いたいことは山のようにありますが敢えて言いません。ですが、最後にこれだけは言わせてください…) エネルギー充填120%! 最終セーフティー解除! (ありがとう……!!) 『波動砲、発射!!』 メイヴは自身の身体を砲身として、精神体の鎧を引っぺがすため、ゲンダーを守るため、そして己を突き動かす意志の力の告げるままに、最後の一撃を放った!! 凄まじいエネルギー波が精神体に迫る。 精神体は身動きがとれない。 極限の一撃が精神体の鉄と銀の鎧を一瞬で灰に変える。 強烈な波動が精神体に大ダメージを与える。しかしそれでもまだ精神体は辛うじて形をとどめている。 『ゲンダー、あとのことは任せましたよ』 どこかからメイヴの声が聞こえたような気がした。 「もちろんダ、メイヴ。よろしく頼まれてやるよ……!!」 震える手でホログローブを構え……波動パルスを発射する! ホログローブの放った閃光が精神体を貫く。 光が弾けて闇が霧散する。ついに精神体は跡形もなく消滅した。 それとほとんど時を同じくして、メイヴは空中で粉々に砕け散った。『ありがとう』の文字を最後に、メイヴの遠隔モニタは永遠に消え去ったのだ。 (オレのほうこそダ、メイヴ……!) ありがとう―― 第19章 了 ブラックボックス20
https://w.atwiki.jp/abwiki/pages/152.html
三角関数と類似の関数。 双曲線正弦(ハイパーボリックサイン)、双曲線余弦(ハイパーボリックコサイン)、双曲線正接(ハイパーボリックタンジェント)を総称して双曲線関数と呼ぶ。 実際の定義式は指数関数を用いて定義されているが、定義式通り計算すると0近傍で桁落ちが生じる。そのため0近傍のsinh(x)、tanh(x)では級数展開を用いて計算する。 #N88BASICConst EPS5 = 0.001' DBL_EPSILON の 1/5 乗程度Function my_sinh(x As Double) As Double' sinh(x)Dim t As DoubleIf Abs(x) EPS5 Thent = Exp(x)my_sinh = (t - 1 / t) / 2Elsemy_sinh = x * (1 + x * x / 6)End IfEnd FunctionFunction my_cosh(x As Double) As Double' cosh(x)Dim t As Doublet = Exp(x)my_cosh = (t + 1 / t) / 2End FunctionFunction my_tanh(x As Double) As Double' tanh(x)If x EPS5 Thenmy_tanh = 2 / (1 + Exp(-2 * x)) - 1ElseIf x -EPS5 Thenmy_tanh = 1 - 2 / (Exp(2 * x) + 1)Elsemy_tanh = x * (1 - x * x / 3)End IfEnd FunctionFunction arcsinh(x AS Double) As Double' sinh-1(x)If x EPS5 Thenarcsinh = Log(Sqr(x * x + 1) + x)ElseIf x -EPS5 Thenarcsinh = -Log(Sqr(x * x + 1) - x)Elsearcsinh = x * (1 - x * x / 6)End IfEnd FunctionFunction arccosh(x As Double) As Double'cosh-1(x)arccosh = Log(x + Sqr(x * x - 1))End FunctionFunction arctanh(x As Double) As Double' tanh-1(x)If Abs(x) EPS5 Thenarctanh = 0.5 * Log((1 + x) / (1 - x))Elsearctanh = x * (1 + x * x / 3.0)End IfEnd Function'Dim i As IntegerDim x As DoublePrint "双曲線関数とその逆の整合性"For i = -10 To 10Print i, arcsinh(my_sinh(i)) - i, arccosh(my_cosh(i)) - Abs(i), arctanh(my_tanh(i)) - iNext iFor i = -10 To 10x = 0.0002 * iPrint x, arcsinh(my_sinh(x)) - x, arccosh(my_cosh(x)) - Abs(x), arctanh(my_tanh(x)) - xNext i
https://w.atwiki.jp/abwiki/pages/303.html
#N88BASICPrint Bin$(4294967294)Function Bin$(i As Long) As StringDim j As LongBin$=""For j=31 To 0 Step -1If i And Int(2^j) Then Bin$=Bin$+"1" Else Bin$=Bin$+"0"NextEnd Function
https://w.atwiki.jp/abwiki/pages/253.html
Sub MainWnd_IDM_OPEN_MenuClick()の Dim buffer As StringをDim buffer As *Byteに、 buffer=ZeroString(dwFileSize)をbuffer=malloc(dwFileSize)に それぞれ変更。 今回は、必要最小限の機能がついたテキスト エディタを製作します。 必要最小限の機能ってどんなものがあるの? 開く、保存 だけです(キッパリ)。しかし、これではさすがに寂しすぎるので、コピー&ペーストなどの編集メニューまでをこのページで解説することにします。 さっそく作ろう! ノーマル ウィンドウ ベースのプロジェクト(プロジェクト名を "TextEditor" とします)を作成し、メニューの作成(IDは "MainMenu")、メインウィンドウへのメニューの貼り付けを行っておきましょう。 テキスト エディタには欠かせない、エディット コントロールの挿入を行います。挿入する場所は適当で構いません。 こんなチッポケなエディット ボックスでいいの?? はい、このままにしておきましょう。テキストエディタは自由にウィンドウのサイズが変更できますよね?(最大化したり、伸縮したり) そのため、ユーザーの利用状況により、プログラム側でサイズを変更しなければなりません。具体的には、Resizeイベント(ウィンドウの大きさが変更されたときのイベント)プロシージャ内に、エディット コントロールの大きさをウィンドウの大きさにあわせてやるプログラムをかくのです。Resizeイベントのコーディングは後に行います。 Resizeイベントは初期時にも呼び出されるので、ここでエディット コントロールのサイズを変更しても特に意味はありません。しかし、チッポケなのが気になる方はご自由に、RADツール内のウィンドウの大きさにあわせてもらっても結構です。 挿入したばかりのエディット コントロールでは設定不足な点があるため、Editプロパティを下のように設定しておきましょう。 先ほど挿入した、ウィンドウ内のエディット コントロールを選択し、Editプロパティ内の「複数行」、「水平スクロールバー」、「水平オートスクロール」、「垂直スクロールバー」、「垂直オートスクロール」、「改行を許可」にチェックを入れます。 Resizeイベントのコーディング "MainWnd" 内の適当な場所を右クリックし、「イベント コード」をクリックします。記述可能なイベントが色々と表示されますが、その中からResizeイベントを選択し、「コーディング」ボタンをクリックします。表示されたプロシージャに下のプログラムを書き込みます。 Sub MainWnd_Resize(SizeType As Long, cx As Integer, cy As Integer) Dim rc As RECT Dim hEdit As Long クライアント領域のサイズを取得 GetClientRect(hMainWnd,rc) EditBox1のウィンドウ ハンドルを取得 hEdit=GetDlgItem(hMainWnd,EditBox1) hEditの大きさを変更する MoveWindow(hEdit, 0, 0, rc.right, rc.bottom,0) End Sub メニューの編集 "MainMenu" を開き、下のような構成になるよう、メニューの追加を行っていきます。メニュー項目を挿入する場合は、挿入したい場所の1つ上の項目を選択し、「挿入」ボタンをクリックしていくことを思い出しましょう。メニューの編集方法は、ステップ6、ステップ7で解説しています。 キャプション ID 備考 ファイル( F) - ポップアップ 新規作成( N) IDM_NEW - - セパレータ 開く( O) IDM_OPEN - 保存( S) IDM_SAVE - - セパレータ 終了( X) IDM_EXIT - 編集( E) - ポップアップ 元に戻す( U) IDM_UNDO - - セパレータ 切り取り( T) IDM_CUT - コピー( C) IDM_COPY - 貼り付け( P) IDM_PASTE - - セパレータ すべて選択( A) IDM_ALLSELECT - ヘルプ( H) - ポップアップ バージョン情報( A) IDM_ABOUT - 上のような構造を持たせた "MainMenu" を、"MainWnd" に貼り付けたのち、それぞれのメニューに対するイベント コーディングを行います。 「新規作成」メニュー イベント EditBox1の内容をSetWindowText関数を利用して空にします。EM_SETMODIFYメッセージで、テキストの変更を示すフラグをFALSEにセットしています。 Sub MainWnd_IDM_NEW_MenuClick() Dim hEdit As Long EditBox1のハンドルを取得 hEdit=GetDlgItem(hMainWnd, EditBox1) hEditの内容を空にする SetWindowText(hEdit,"") End Sub 「開く」メニュー イベント 初めて利用するAPI関数がいくつかあるかもしれません。GetOpenFileName関数は前のステップ8でやりましたね。ファイルオープンにCreateFile関数が、ファイルからのデータの読み込みにReadFile関数などが利用されているところもおさえておくと良いでしょう。 プロシージャの最後の部分で、ファイル データが格納されている文字列変数bufferの内容を、SetWindowText関数を利用してウィンドウに反映させています。 Sub MainWnd_IDM_OPEN_MenuClick() Dim hEdit As Long Dim ofn As OPENFILENAME Dim hFile As Long Dim dwFileSize As DWord Dim dwAccessByte As DWord Dim FileName[MAX_PATH-1] As Byte Dim buffer As String OPENFILENAME構造体の初期化 FillMemory(VarPtr(ofn),Len(ofn),0) ofn.lStructSize=Len(ofn) ofn.hwndOwner=hMainWnd ofn.lpstrFilter=Ex"テキスト ファイル(*.txt)\0*.txt\0すべてのファイル(*.*)\0*\0\0" ofn.nFilterIndex=1 ofn.lpstrFile=FileName ofn.nMaxFile=MAX_PATH ofn.lpstrTitle="ファイルを開く" ofn.Flags=OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST ofn.lpstrDefExt="*" 「ファイルを開く」ダイアログ ボックスを表示 If GetOpenFileName(ofn)=0 Then Exit Sub ------------------- ファイル オープン ------------------- hFile=CreateFile(ofn.lpstrFile, GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, _ ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0) If hFile=INVALID_HANDLE_VALUE Then MessageBox(hMainWnd,"ファイルオープンに失敗","TextEditor",MB_OK or MB_ICONEXCLAMATION) Exit Sub End If ファイルサイズを取得 dwFileSize=GetFileSize(hFile,0) 文字列バッファ用のメモリを確保 buffer=ZeroString(dwFileSize) ファイルの内容を文字列変数bufferに読み込む ReadFile(hFile,buffer,dwFileSize,VarPtr(dwAccessByte),ByVal 0) ファイル ハンドルを閉じる CloseHandle(hFile) ------------------- EditBox1のハンドルを取得 hEdit=GetDlgItem(hMainWnd, EditBox1) hEditにバッファをセットする SetWindowText(hEdit,buffer) hEditにフォーカスをセット SetFocus(hEdit) End Sub 「保存」メニュー イベント 「ファイルの保存」ダイアログボックスを表示し、ofn.lpstrFileに格納されたファイルへ保存するプログラムになります。「開く」メニュー イベントと少し似ていますね。 Sub MainWnd_IDM_SAVE_MenuClick() Dim hEdit As Long Dim ofn As OPENFILENAME Dim hFile As Long Dim length As DWord Dim dwAccessByte As DWord Dim FileName[MAX_PATH] As Byte Dim buffer As String OPENFILENAME構造体の初期化 FillMemory(VarPtr(ofn),Len(ofn),0) ofn.lStructSize=Len(ofn) ofn.hwndOwner=hMainWnd ofn.lpstrFilter=Ex"テキスト ファイル(*.txt)\0*.txt\0すべてのファイル(*.*)\0*\0\0" ofn.nFilterIndex=1 ofn.lpstrFile=FileName ofn.nMaxFile=MAX_PATH ofn.lpstrTitle="ファイルの保存" ofn.Flags=OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST ofn.lpstrDefExt="*" 「ファイルの保存」ダイアログ ボックスを表示 If GetSaveFileName(ofn)=0 Then Exit Sub EditBox1のハンドルを取得 hEdit=GetDlgItem(hMainWnd, EditBox1) テキスト データを格納するためのバッファ領域を確保 length=GetWindowTextLength(hEdit) buffer=ZeroString(length+1) テキスト バッファを取得 GetWindowText(hEdit, buffer, length+1) ---------------- ファイルへ保存 ---------------- hFile=CreateFile(ofn.lpstrFile, GENERIC_WRITE, 0, _ ByVal 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0) If hFile=INVALID_HANDLE_VALUE Then MessageBox(hMainWnd,"ファイルオープンに失敗","TextEditor",MB_OK or MB_ICONEXCLAMATION) Exit Sub End If 書き込む WriteFile(hFile,buffer,length,VarPtr(dwAccessByte),ByVal 0) ファイル ハンドルを閉じる CloseHandle(hFile) End Sub 「終了」メニュー イベント hMainWndに対して、WM_CLOSE メッセージを送ります。 Sub MainWnd_IDM_EXIT_MenuClick() SendMessage(hMainWnd,WM_CLOSE,0,0) End Sub 「元に戻す」メニュー イベント 「編集」関連のメニューイベントのほとんどは、(WM_???)というメッセージを送るだけでよいので楽チンです(エディット コントロール任せ)。 Edit1に対して、WM_UNDO メッセージを送ります。 Sub MainWnd_IDM_UNDO_MenuClick() SendMessage(GetDlgItem(hMainWnd,EditBox1), WM_UNDO, 0, 0) End Sub 「切り取り」メニュー イベント Edit1に対して、WM_CUT メッセージを送ります。 Sub MainWnd_IDM_CUT_MenuClick() SendMessage(GetDlgItem(hMainWnd,EditBox1), WM_CUT, 0, 0) End Sub 「コピー」メニュー イベント Edit1に対して、WM_COPY メッセージを送ります。 Sub MainWnd_IDM_COPY_MenuClick() SendMessage(GetDlgItem(hMainWnd,EditBox1), WM_COPY, 0, 0) End Sub 「貼り付け」メニュー イベント Edit1に対して、WM_PASTE メッセージを送ります。 Sub MainWnd_IDM_PASTE_MenuClick() SendMessage(GetDlgItem(hMainWnd,EditBox1), WM_PASTE, 0, 0) End Sub 「すべて選択」メニュー イベント EM_SETSEL メッセージで、3番目のパラメータに始点を、4番目のパラメータに終点を指定することで、「すべて選択」の機能を実現することができます。 Sub MainWnd_IDM_ALLSELECT_MenuClick() Dim hEdit As Long Dim length As Long EditBox1のハンドルを取得 hEdit=GetDlgItem(hMainWnd,EditBox1) テキスト データの長さを取得 length=GetWindowTextLength(hEdit) すべての部分を選択する SendMessage(hEdit,EM_SETSEL,0,length) End Sub 「バージョン情報」メニュー イベント ここは、MessageBox関数を利用し、バージョン情報を表示するだけです。 Sub MainWnd_IDM_ABOUT_MenuClick() MessageBox(hMainWnd,"TextEditor Ver1.00","バージョン情報",MB_OK or MB_ICONINFORMATION) End Sub おまけですが、"MainWnd" のRAD画面を開き、ウィンドウプロパティ内のフォントを、"FixedSys"(サイズ14)に変更してみると見やすくなりますよ☆ これですべての作業が完了です。ファイルの入出力などに気を配ってやれば、後は意外と簡単だったかもしれません。このプログラムはテキスト エディタの基礎部分にすぎないので、やる気のある方は、機能追加にチャレンジしてみても良いでしょう。
https://w.atwiki.jp/abwiki/pages/663.html
x64 とは インテルのCPU、Pentium4(Prescott)の一部から対応した64ビットの命令セットアーキテクチャ。 もともとはAMDが最初に考えたのでAMD64と呼ばれていた。追随したインテルはこれを良しとせずEM64Tと呼んでいたが結局x64に落ち着いた。 紛らわしいものにIA64というものがあるが、互換性はない。 ABはx64に対応しているので64ビットアプリを生成可能。 ※AB4の64bit実行形式をコンパイルする際にMSCRT.DLLの64bitデバック版が必須。 これは64bit版WinXPの頃に利用されていたランタイムで 一般にMSVCランタイム配布物には含まれない。AB4の64bit版を使いたい場合は ランタイムライブラリをどこかで入手するか、FreeBASICを使うか 改めてABで実行形式を64bit版でビルドしたい場合はAB5(Ver.5)を使うこと。
https://w.atwiki.jp/abwiki/pages/78.html
コマンドボタン † マウスクリックなんかの入力を受け付けるコントロール ↑ [edit] コマンドボタンのスタイル † RADで設定できるスタイルについて 無効(使用不可) 押せない 可視 チェックしておかないとボタンが見えない グループ グループボックス?を参照 タブストップ 加筆plz 標準のボタン 入力フォーカスを持ったボタンになる が、なぜかENTER押しても反応しない ABのダイアログボックスは擬似的な物なのでそれが本物だと反応すると思う。 オーナー描画 ボタンが描画されるタイミングでWM_DRAWITEMが親ウィンドウに送られます またボタンのウィンドウプロシージャは描画操作を全くしません(自分で描画しないと何も表示されない) アイコン 使ったこと無いからなんとも言えんがアイコンを表示するんじゃないの? ビットマップ 使ったこと無いからなんとも言えんがビットマップを表示するんじゃないの? 複数行 キャプションに複数行のテキストを表示できる 通知 チェックしていない場合はBN_CLICK以外の通知メッセージは親ウィンドウに送られない そのためRADでBN_DBCLICKに対するイベントを書いていても無視されてしまう ↑ [edit] ボタンの操作 † 操作って程の操作は無いような… SendMessage(hButton,BM_CLICK,0,0) で擬似的にクリックできる
https://w.atwiki.jp/abwiki/pages/142.html
関数と分岐処理が使えればかなりのプログラムが組める あとは使い回しの問題だけだ。 平方根の計算プログラムを作ってみよう #N88BASIC 関数。aの平方根を求める Function sqrt(a As Double) As Double Dim x0 As Double Dim d As Double If a 0 Then 入力が負の時は-1を返す。 sqrt = -1 Exit Function End If d = 0.00000001 差の幅 sqrt = a/2 近似値 Do x0 = sqrt sqrt = 0.5*(x0+(a/x0)) Loop While Abs(sqrt-x0) d 計算結果の幅が小さくなるまで繰り返す End Function Dim x As Double Input x Print sqrt(x)
https://w.atwiki.jp/abwiki/pages/664.html
xorshift xorshiftは新しい擬似乱数。 Google ChromeのJavascriptでも採用された。 ABでxorshiftを実装。 #N88BASIC Dim x = 123456789 As DWORD Dim y = 362436069 As DWORD Dim z = 521288629 As DWORD Dim w = 88675123 As DWORD Function xor128 () As DWORD Dim t As DWORD t = x xor (x 11) x = y y = z z = w w = (w xor (w 19)) xor (t xor (t 8)) xor128 = w End Function Dim i As Long For i=0 To 10 Print xor128() Next
https://w.atwiki.jp/abwiki/pages/305.html
関数内で、自身の関数を呼ぶ処理のこと。再帰的関数を使う事で、ある種のアルゴリズム表記を端的に 表現可能な場合もあるが、多くの場合、デバックや可読性に難が生じる場合がある。 一般に、再帰的表現はループ展開による表現が可能である。 '再帰Function sum41(a As long, b As long) as longif a b then exit functionsum41=a+sum41(a+1,b)End Function#N88BASICPrint sum41(sum41(1,sum41(-1,3)),sum41(sum41(1,sum41(1,2)),9)) 再帰的処理では、自身の関数を呼ぶので、結果として無限ループとなる。したがって、通常はif文などを 用いて停止条件などを指定する必要がある。 しかし実際には再帰的関数は、幾つかの手続き型言語では、再帰関数は無限ループとはならない。 原因は、関数を実行する際の引数保存スタックで、引数等をスタックと呼ばれる変数に一時的に退避する仕組みを持つ為。 スタックは無限ではないので、再帰途中で停止する。 再帰的関数の代表的な例は、LispやSchemeなどのプログラミング言語で、殆どの処理においてループに該当する 処理は再帰的関数として書かれ、ループ構文が無い言語も存在する。 近年になり、幾つかのプログラミング言語ではLisp的な機能を取り入れる等、見直されている。 ループはなんでも再帰するのが上級者。